Automatic extraction, modeling, and code mapping of application user interface display screens and components

ABSTRACT

Managing user applications is provided. A visual model of user interface display screens of a user application is generated by mapping components displayed within the user interface display screens to screen position coordinates and by mapping the screen position coordinates corresponding to the components to original source code of the user application. A runtime policy for each component in a selected set of components within the user interface display screens of the user application is generated based on user interaction with the generated visual model of the user interface display screens. The generated runtime policy for each component in the selected set of components is sent to a client device via a network. Activity of each component in the selected set of components in the client device is tracked using data that is tracked and logged on the client device based the generated runtime policy for each selected component.

This application is a continuation of U.S. patent application Ser. No.13/752,955, filed on Jan. 29, 2013.

BACKGROUND

1. Field

The disclosure relates generally to application management and morespecifically to the automatic extraction, modeling, and code mapping ofapplication user interface display screens and components within thedisplay screens in order to track and log data generated by useractivities within the application. The tracked and logged data may be arepresentation of one or more compiled program objects that representuser interface components during execution of the application andinternal attributes of those compiled program objects and/or data thatflows in and out of the compiled program objects during execution of theapplication. The user interface display screens provide a visualizationto associate and to control functionality of selected components byacting on the compiled program objects within the application.

2. Description of the Related Art

Companies are increasingly supporting business applications, which covera wide range of functionality, running on mobile data processingdevices, such as smart phones, personal digital assistants, handheldcomputers, and laptop computers. Also, companies are adopting businessapplication stores and allowing employees to bring their own personalmobile data processing devices to work. Thus, companies desiring toprotect their computing infrastructures may want to manage thesebusiness applications and their distribution on employees' personalmobile data processing devices.

SUMMARY

According to one illustrative embodiment, a computer system and acomputer program product for managing user applications is provided. Avisual model of user interface display screens of a user application isgenerated by mapping components displayed within the user interfacedisplay screens to screen position coordinates and by mapping the screenposition coordinates corresponding to the components to original sourcecode of the user application without accessing the original source codeof the user application. A runtime policy for each component in aselected set of components within the user interface display screens ofthe user application is generated based on user interaction with thegenerated visual model of the user interface display screens. Thegenerated runtime policy for each component in the selected set ofcomponents within the user interface display screens of the userapplication is sent to a client device via a network. Activity of eachcomponent in the selected set of components within the user interfacedisplay screens of the user application running on the client device istracked using data that is tracked and logged on the client device basedon the generated runtime policy on each component in the selected set ofcomponents.

According to another illustrative embodiment, a data processing systemand computer program product for managing user applications is provided.Images of displayed user interface display screens of a running userapplication on the data processing system are captured. An embeddedinstrumentation library in the running user application is used tocapture the images of the displayed user interface display screens.Screen position coordinates are calculated corresponding to componentswithin the displayed user interface display screens of the running userapplication. A display screen data package is generated that includesthe captured images of the displayed user interface display screens ofthe running user application and the calculated screen positioncoordinates corresponding to the components within the displayed userinterface display screens.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a pictorial representation of a network of data processingsystems in which illustrative embodiments may be implemented;

FIG. 2 is a diagram of a data processing system in which illustrativeembodiments may be implemented;

FIG. 3 is a diagram illustrating an example of an application managementsystem in accordance with an illustrative embodiment;

FIG. 4 is a diagram illustrating examples of user applicationinstrumentation processes in accordance with an illustrative embodiment;

FIG. 5 is an example of a display screen data package in accordance withan illustrative embodiment;

FIG. 6 is an example of a runtime tracking and enforcement policy inaccordance with an illustrative embodiment;

FIG. 7 is a diagram illustrating an example of visual modeling of a userapplication in accordance with an illustrative embodiment;

FIG. 8 is a diagram illustrating an example of a web browser userapplication control display in accordance with an illustrativeembodiment;

FIG. 9 is a diagram illustrating an example of a web browser userapplication usage display in accordance with an illustrative embodiment;

FIG. 10A and FIG. 10B are a flowchart illustrating a process formanaging applications in accordance with an illustrative embodiment;

FIG. 11 is a flowchart illustrating a process for capturing userinterface display screens in accordance with an illustrative embodiment;

FIG. 12 is a flowchart illustrating a process for storing a displayscreen data package in accordance with an illustrative embodiment;

FIG. 13 is a flowchart illustrating a process for concurrentlydisplaying a user interface display screen rendering in accordance withan illustrative embodiment;

FIG. 14 is a flowchart illustrating a process for generating a visualmodel of a user interface display screen in accordance with anillustrative embodiment;

FIG. 15 is a flowchart illustrating a process for generating a runtimepolicy in accordance with an illustrative embodiment;

FIG. 16 is a flowchart illustrating a process for sending a runtimepolicy to registered client devices in accordance with an illustrativeembodiment; and

FIG. 17 is a flowchart illustrating a process for enforcing runtimepolicies in accordance with an illustrative embodiment.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of theillustrative embodiments may be embodied as a computer system orcomputer program product. Accordingly, aspects of the illustrativeembodiments may take the form of an entirely hardware embodiment, anentirely software embodiment (including firmware, resident software,micro-code, etc.), or an embodiment combining software and hardwareaspects that may all generally be referred to herein as a “circuit,”“module,” or “system.” Furthermore, aspects of the illustrativeembodiments may take the form of a computer program product embodied inone or more computer readable medium(s) having computer readable programcode embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, or semiconductor system, apparatus, or device, or anysuitable combination of the foregoing. More specific examples (anon-exhaustive list) of the computer readable storage medium wouldinclude the following: a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), a portablecompact disc read-only memory (CD-ROM), an optical storage device, amagnetic storage device, or any suitable combination of the foregoing.In the context of this document, a computer readable storage medium maybe any physical medium that can contain or store a program for use by orin connection with an instruction execution system, apparatus, ordevice.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of theillustrative embodiments may be written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Java, Smalltalk, C++ or the like and conventionalprocedural programming languages, such as the “C” programming languageor similar programming languages. The program code may execute entirelyon the user's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the illustrative embodiments are described below withreference to flowchart illustrations and/or block diagrams of computersystems and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

With reference now to the figures, and in particular, with reference toFIGS. 1-3, diagrams of data processing environments are provided inwhich illustrative embodiments may be implemented. It should beappreciated that FIGS. 1-3 are only meant as examples and are notintended to assert or imply any limitation with regard to theenvironments in which different embodiments may be implemented. Manymodifications to the depicted environments may be made.

FIG. 1 depicts a pictorial representation of a network of dataprocessing systems in which illustrative embodiments may be implemented.Network data processing system 100 is a network of computers and otherdevices in which the illustrative embodiments may be implemented.Network data processing system 100 contains network 102, which is themedium used to provide communications links between the computers andthe other various devices connected together within network dataprocessing system 100. Network 102 may include connections, such as wirecommunication links, wireless communication links, or fiber opticcables.

In the depicted example, server 104 and server 106 connect to network102, along with storage unit 108. Server 104 and server 106 may be, forexample, server computers with high speed connections to network 102. Inaddition, server 104 and/or server 106 may provide services for managinguser applications located on client devices connected to network 102 bydeploying runtime tracking and enforcement policies to the clientdevices to track activities and/or control functionality of the userapplications. The runtime tracking and enforcement policies define whichcomponents of running user applications are to be tracked and logged. Acomponent of a user application encapsulates, for example, a userinterface component, such as an input button displayed within a userinterface, and a set of one or more compiled program objects that makeup and control the input button during execution of the userapplication. The set of compiled program objects represent the userinterface component during execution of the user application. Inaddition, the runtime tracking and enforcement policies may definewhether the functionality of particular components of the running userapplication are to be enabled or disabled, when the functionality is tobe enabled or disabled, and where the functionality of the componentsare to enabled or disabled depending on a current location of a clientdevice. For example, a runtime tracking and enforcement policy maydefine that a particular component of a business application may only beenabled or tracked during the business hours of 9:00 a.m. to 5:00 p.m.and only when the client device containing the business application islocated on the premises of the business owning the business application.

Clients 110, 112, 114, and 116 also connect to network 102. Clients 110,112, 114, and 116 are registered clients to server 104 and/or server106. In addition, clients 110, 112, 114, and 116 include one or moretypes of user applications managed by server 104 and/or server 106. Inthe depicted example, server 104 and/or server 106 may provideinformation, such as boot files, operating system images, and userapplications to clients 110, 112, 114, and 116. Further, server 104and/or server 106 may inject the user applications of clients 110, 112,114, and 116 with instrumentation libraries that are used to track andcontrol the user applications. Server 104 and/or server 106 may use, forexample, a byte code injector to inject the instrumentation librariesinto the user applications.

Clients 110 and 112 may be, for example, mobile data processing systems,such as cellular telephones, smart phones, personal digital assistants,gaming devices, or handheld computers, with wireless communication linksto network 102. Clients 114 and 116 may be, for example, computers, suchas personal computers, network computers, or portable computers, such aslaptop computers, with wire communication links to network 102. However,it should be noted that clients 110, 112, 114, and 116 may represent anycombination of computers and mobile data processing systems connected tonetwork 102 by wire communication links and/or wireless communicationlinks.

Storage unit 108 is a network storage device capable of storing data ina structured or unstructured format. Storage unit 108 may provide, forexample, storage of: identification numbers of a plurality of registeredclient devices; identification numbers of a plurality of userapplications; user applications; instrumentation libraries for the userapplications; visual models of the user applications; captured userinterface display screens of the user applications including screenposition coordinates of visual components within the user interfacedisplay screens; identification labels of the visual components withinthe user interface display screens; runtime tracking and enforcementpolicies for the visual components within the user interface displayscreens; location tracking information, such as global positioningsystem (GPS) data, for registered client devices; program object datarepresenting a structure of the application; and user application usagehistories. Further, storage unit 108 may store other data, such asauthentication data that may include user names, passwords, and/orbiometric data associated with a plurality of users and systemadministrators of the application management system.

Moreover, it should be noted that network data processing system 100 mayinclude any number of additional server devices, client devices, andother devices not shown. Program code located in network data processingsystem 100 may be stored on a computer recordable storage medium anddownloaded to a computer or other device for use. For example, programcode may be stored on a computer recordable storage medium on server 104and downloaded to client 110 over network 102 for use on client 110.

In the depicted example, network data processing system 100 is theInternet with network 102 representing a worldwide collection ofnetworks and gateways that use the Transmission ControlProtocol/Internet Protocol (TCP/IP) suite of protocols to communicatewith one another. At the heart of the Internet is a backbone ofhigh-speed data communication lines between major nodes or hostcomputers, consisting of thousands of commercial, governmental,educational, and other computer systems that route data and messages. Ofcourse, network data processing system 100 also may be implemented as anumber of different types of networks, such as for example, an intranet,a local area network (LAN), an internet, or a wide area network (WAN).FIG. 1 is intended as an example, and not as an architectural limitationfor the different illustrative embodiments.

With reference now to FIG. 2, a diagram of a data processing system isdepicted in accordance with an illustrative embodiment. Data processingsystem 200 is an example of a computer, such as server 104 in FIG. 1, inwhich computer readable program code or instructions implementingprocesses of illustrative embodiments may be located. In thisillustrative example, data processing system 200 includes communicationsfabric 202, which provides communications between processor unit 204,memory 206, persistent storage 208, communications unit 210,input/output (I/O) unit 212, and display 214.

Processor unit 204 serves to execute instructions for softwareapplications or programs that may be loaded into memory 206. Processorunit 204 may be a set of one or more processors or may be amulti-processor core, depending on the particular implementation.Further, processor unit 204 may be implemented using one or moreheterogeneous processor systems, in which a main processor is presentwith secondary processors on a single chip. As another illustrativeexample, processor unit 204 may be a symmetric multi-processor systemcontaining multiple processors of the same type.

Memory 206 and persistent storage 208 are examples of storage devices216. A computer readable storage device is any piece of hardware that iscapable of storing information, such as, for example, withoutlimitation, data, computer readable program code in functional form,and/or other suitable information either on a transient basis and/or apersistent basis. Further, a computer readable storage device does notinclude a non-statutory propagation medium. Memory 206, in theseexamples, may be, for example, a random access memory, or any othersuitable volatile or non-volatile storage device. Persistent storage 208may take various forms, depending on the particular implementation. Forexample, persistent storage 208 may contain one or more devices. Forexample, persistent storage 208 may be a hard drive, a flash memory, arewritable optical disk, a rewritable magnetic tape, or some combinationof the above. The media used by persistent storage 208 may be removable.For example, a removable hard drive may be used for persistent storage208.

In this example, persistent storage 208 stores application manager 218,display screen data packages 220, visual models 222, runtime policies224, registered clients 226, and instrumented user applications 228.Application manager 218 is a software program that instruments, manages,tracks, and controls instrumented user applications 228. Applicationmanager 218 instruments instrumented user applications 228 withinstrumentation libraries that include runtime policies 224. Runtimepolicies 224 are a plurality of runtime tracking and enforcementpolicies that data processing system 200 generates based on userinteraction with visual models 222 to track and log compiled programobjects that represent components displayed within user interfacedisplay screens during execution of instrumented user applications 228,data flow in and out of those compiled program objects during executionof instrumented user applications 228, and activities of the componentsdisplayed within user interface display screens of instrumented userapplications 228. Moreover, runtime policies 224 may controlfunctionality of selected components of instrumented user applications228. Further, runtime policies 224 may also specify an enforcement modeltriggering behavior in a specific component mapped to one or morecomponents in a selected set of components within the user interfacedisplay screens.

Data processing system 200 deploys instrumented user applications 228 toregistered clients 226. It should be noted that instrumented userapplications 228 may represent a plurality of the same type of softwareapplication or may represent a plurality of different types of softwareapplications. Registered clients 226 are client devices, such as clients110-116 in FIG. 1, which are registered with data processing system 200to receive user application management services provided by dataprocessing system 200.

After registered clients 226 receive instrumented user applications 228,instrumented user applications 228 send data processing system 200display screen data packages 220 to data processing system 200. Adisplay screen data package may include, for example, captured images ofdisplayed user interface display screens of a running instrumented userapplication, screen position coordinates corresponding to componentswithin the displayed user interface display screens, and program objectdata. The program object data may include, for example, structural dataabout an instrumented user application, such as associations betweencompiled program objects and corresponding components displayed withinuser interface display screens during execution of the instrumented userapplication and internal attributes of the compiled program objects, anddata flow in and out of the compiled program objects during execution ofthe instrumented user application. In addition, a display screen datapackage may also include names and/or identification numbers of thecaptured user interface display screens for identification.

Subsequent to receiving display screen data packages 220 from registeredclients 226, data processing system 200 generates visual models 222 ofthe captured user interface display screens using the information withindisplay screen data packages 220. Visual models 222 may be, for example,hypertext markup language (HTML) image maps of the captured userinterface display screens and corresponding components. Thus, a visualmodel may be a hierarchical view tree structure. Each node in the viewtree structure corresponds to a component within the user interfacedisplay screen, along with the component's compiled program objects, andfor each node, a runtime policy is defined specifying how the componentand its compiled program objects corresponding to the node should behaveor function. Furthermore, each node is linked to the original sourcecode in the user application corresponding to that particular componentrepresented by that node.

A visual model illustrates or depicts all user interface display screensof an instrumented user application that may be presented to a user andall activities that may be performed by the user on the instrumenteduser application. Data processing system 200 may, for example, displayvisual models 222 in a web-based control panel for users of dataprocessing system 200 to create runtime policies 224 for selectedcomponents within the captured user interface display screens. In otherwords, visual models 222 are interactive models.

Communications unit 210, in this example, provides for communicationwith other data processing systems or devices via a network, such asnetwork 102 in FIG. 1. Communications unit 210 may providecommunications through the use of either or both physical and wirelesscommunications links. The physical communications link may utilize, forexample, a wire, cable, universal serial bus, or any other physicaltechnology to establish a physical communications link for dataprocessing system 200. The wireless communications link may utilize, forexample, shortwave, high frequency, ultra high frequency, microwave,wireless fidelity (Wi-Fi), bluetooth technology, global system formobile communications (GSM), code division multiple access (CDMA),second-generation (2G), third-generation (3G), fourth-generation (4G),or any other wireless communication technology or standard to establisha wireless communications link for data processing system 200.

Input/output unit 212 allows for the input and output of data with otherdevices that may be connected to data processing system 200. Forexample, input/output unit 212 may provide a connection for user inputthrough a keypad, a keyboard, a mouse, and/or some other suitable inputdevice. Display 214 provides a mechanism to display information to auser.

Instructions for the operating system, applications, and/or programs maybe located in storage devices 216, which are in communication withprocessor unit 204 through communications fabric 202. In thisillustrative example, the instructions are in a functional form onpersistent storage 208. These instructions may be loaded into memory 206for running by processor unit 204. The processes of the differentembodiments may be performed by processor unit 204 using computerimplemented instructions, which may be located in a memory, such asmemory 206. These instructions are referred to as program code, computerusable program code, or computer readable program code that may be readand run by a processor in processor unit 204. The program code, in thedifferent embodiments, may be embodied on different physical computerreadable storage devices, such as memory 206 or persistent storage 208.

Program code 230 is located in a functional form on computer readablemedia 232 that is selectively removable and may be loaded onto ortransferred to data processing system 200 for running by processor unit204. Program code 230 and computer readable media 232 form computerprogram product 234. In one example, computer readable media 232 may becomputer readable storage media 236 or computer readable signal media238. Computer readable storage media 236 may include, for example, anoptical or magnetic disc that is inserted or placed into a drive orother device that is part of persistent storage 208 for transfer onto astorage device, such as a hard drive, that is part of persistent storage208. Computer readable storage media 236 also may take the form of apersistent storage, such as a hard drive, a thumb drive, or a flashmemory that is connected to data processing system 200. In someinstances, computer readable storage media 236 may not be removable fromdata processing system 200.

Alternatively, program code 230 may be transferred to data processingsystem 200 using computer readable signal media 238. Computer readablesignal media 238 may be, for example, a propagated data signalcontaining program code 230. For example, computer readable signal media238 may be an electro-magnetic signal, an optical signal, and/or anyother suitable type of signal. These signals may be transmitted overcommunication links, such as wireless communication links, an opticalfiber cable, a coaxial cable, a wire, and/or any other suitable type ofcommunications link. In other words, the communications link and/or theconnection may be physical or wireless in the illustrative examples. Thecomputer readable media also may take the form of non-tangible media,such as communication links or wireless transmissions containing theprogram code.

In some illustrative embodiments, program code 230 may be downloadedover a network to persistent storage 208 from another device or dataprocessing system through computer readable signal media 238 for usewithin data processing system 200. For instance, program code stored ina computer readable storage media in a server data processing system maybe downloaded over a network from the server to data processing system200. The data processing system providing program code 230 may be aserver computer, a client computer, or some other device capable ofstoring and transmitting program code 230.

The different components illustrated for data processing system 200 arenot meant to provide architectural limitations to the manner in whichdifferent embodiments may be implemented. The different illustrativeembodiments may be implemented in a data processing system includingcomponents in addition to, or in place of, those illustrated for dataprocessing system 200. Other components shown in FIG. 2 can be variedfrom the illustrative examples shown. The different embodiments may beimplemented using any hardware device or system capable of executingprogram code. As one example, data processing system 200 may includeorganic components integrated with inorganic components and/or may becomprised entirely of organic components excluding a human being. Forexample, a storage device may be comprised of an organic semiconductor.

As another example, a computer readable storage device in dataprocessing system 200 is any hardware apparatus that may store data.Memory 206, persistent storage 208, and computer readable storage media236 are examples of physical storage devices in a tangible form.

In another example, a bus system may be used to implement communicationsfabric 202 and may be comprised of one or more buses, such as a systembus or an input/output bus. Of course, the bus system may be implementedusing any suitable type of architecture that provides for a transfer ofdata between different components or devices attached to the bus system.Additionally, a communications unit may include one or more devices usedto transmit and receive data, such as a modem or a network adapter.Further, a memory may be, for example, memory 206 or a cache such asfound in an interface and memory controller hub that may be present incommunications fabric 202.

In the course of developing illustrative embodiments, it was discoveredthat with companies offering such a wide range of mobile businessapplications, mobile data processing devices, and services, thesecompanies needed a way to protect their business data on these mobiledata processing devices and their networked resources. In addition,these companies needed a way to enable and disable not only the businessapplications, but also the sensitive components and data displayed bythese business applications. Thus, illustrative embodiments provide asystem, language, and protocol for modeling and controlling applicationsafter the applications have been compiled. A post-compile, pre-deploysystem provides security and application management before releasingthese mobile applications to mobile data processing systems of employeesof an enterprise. The ability to manage and control the applicationsafter they have been deployed on mobile data processing devices gives anenterprise an advantage in protecting the computing infrastructure andservices used by these applications.

Illustrative embodiments focus on mobile application runtime policyenforcement, security, and mobile application distribution in anenterprise. Illustrative embodiments manage enterprise mobileapplications using an application manager server to perform thefollowing tasks without examining or modifying the original source codeof an application because examining the original source code of anapplication may not always be possible and may require the expertise ofan application manager with diverse programming and technical skills.The application manager server examines captured user interface displayscreens of a user application after the user application has beencompiled and before the user application is released to mobile dataprocessing devices. The application manager server examines visualcomponents within the captured user interface display screens of a userapplication and builds a visual model of the application user interfacedisplay screen components, compiled program objects corresponding to thecomponents displayed within user interface display screens duringexecution of the user application, and other data processing systemcomponents, such as a global positioning system component, a cameracomponent, and a network communication component.

The application manager server generates a runtime tracking andenforcement policy for one or more selected components of the userapplication based on user interaction with the selected components ofthe captured user interface display screens. The application managerserver may then deploy the generated runtime tracking and enforcementpolicies to the user application at release and/or at post release time.These runtime tracking and enforcement policies may track and logactivities of the running application and/or control functionality ofthe application. Further, the application manager server may deployupdates or modifications to the runtime tracking and enforcementpolicies after the user application has been released to registeredmobile data processing client devices.

The application manager server injects an instrumentation library intothe user applications, which is able to interface between the nativeoperating systems of the client devices and the code of the userapplications. The instrumentation library is programmed to capture andtransmit the user interface display screens of a running userapplication to the application manager server or to abstract the userinterface display screens of a static user application by examining thesource code or the byte code of the static user application and thentransmit the abstracted user interface display screens to theapplication manager server. In addition, the instrumentation library mayor may not include the generated runtime tracking and enforcementpolices.

Thus, illustrative embodiments provide a computer system and computerprogram product for managing user applications. A computer generates avisual model of user interface display screens of a user application bymapping components displayed within the user interface display screensto screen position coordinates and by mapping the screen positioncoordinates corresponding to the components to original source code ofthe user application without accessing the original source code of theuser application. The computer generates a runtime policy for eachcomponent in a selected set of components within the user interfacedisplay screens of the user application based on user interaction withthe generated visual model of the user interface display screens. Thecomputer sends the generated runtime policy for each component in theselected set of components within the user interface display screens ofthe user application to a client device via a network. The computertracks activity of each component in the selected set of componentswithin the user interface display screens of the user applicationrunning on the client device using data that is tracked and logged onthe client device based on the generated runtime policy for eachcomponent in the selected set of components.

With reference now to FIG. 3, a diagram illustrating an example of anapplication management system is depicted in accordance with anillustrative embodiment. Application management system 300 may be, forexample, implemented in a network of data processing systems, such asnetwork data processing system 100 in FIG. 1. Application managementsystem 300 is a system of hardware and software components that monitor,track, and control selected components within user interface displayscreens of instrumented user applications located on client devices,such as clients 110-116 in FIG. 1.

Application management system 300 includes application manager serverdevice 302, registered client device 304 and registered client device306. Application manager server device 302 may be, for example, server104 in FIG. 1 or data processing system 200 in FIG. 2. In addition,application manager server device 302 may represent a plurality ofapplication manager server devices.

Application manager server device 302 provides application managementservices to registered client devices 304 and 306. Application managerserver device 302 injects user application 308 with instrumentationlibrary 310 prior to application manager server device 302 deployinguser application 308 to registered clients 304 and 306. It should benoted that even though in this example registered client devices 304 and306 include the same user application (i.e., user application 308),registered clients 304 and 306 may include different user applications.

Instrumentation library 310 is programmed to enable screen capturelogging, such as screen capture enabled logging 312, which is sent toapplication manager server device 302. In other words, instrumentationlibrary 310 captures displayed user interface display screens on runninguser application 308 and then transmits the captured user interfacedisplay screens to application manager server device 302 for processing.The captured user interface display screens include all visualcomponents within the user interface display screens and the visualcomponents' calculated screen position coordinates within the userinterface display screens. Alternatively, instrumentation library 310may abstract the user interface display screens of user application 308by examining the compiled program objects that correspond to componentswithin the user interface display screens of user application 308, theoriginal source code of user application 308, or the byte code of userapplication 308 and then transmit the abstracted user interface displayscreens to application manager server device 302.

After receiving the user interface display screens of user application308, application manager server device 302 generates runtime trackingand enforcement policies 314 based on user interaction with selectedcomponents of the user interface display screens displayed in webbrowser control panel 316 in display 318 of application manager serverdevice 302. Web browser control panel 316 represents a plurality ofdifferent displays used by a system administrator of application managerserver device 302 to generate runtime policies for selected componentsof the user interface display screens to track and/or control theselected components, compiled program objects that correspond to theselected components during execution of user application 308, and dataflow in and out of the corresponding compiled program objects during theexecution of user applications 308. Subsequently, application managerserver device 302 deploys the generated runtime tracking and enforcementpolicies to registered clients 304 and 306, such as deploy runtimetracking and enforcement policies to instrumented applications 320.Registered clients 304 and 306 update instrumentation library 310 withthe newly deployed runtime tracking and enforcement policies.Instrumentation library 310 enforces the runtime policies on userapplication 308 to track and/or control specific components of the userinterface display screens of user application 308, the compiled programobjects that correspond to the specified components during the executionof user application 308, and the data flow in and out of thecorresponding compiled program objects during the execution of userapplications 308.

With reference now to FIG. 4, a diagram illustrating examples of userapplication instrumentation processes is depicted in accordance with anillustrative embodiment. User application instrumentation process 400 isa process for injecting a user application, such as user application 308in FIG. 3, with an instrumentation library, such as instrumentationlibrary 310 in FIG. 3. The instrumentation library includes runtimetracking and enforcement policies, such as runtime policies 224 in FIG.2.

User application instrumentation process 400 may inject the userapplication with the instrumentation library with minimal to no sourcecode modification of the user application. As a result, illustrativeembodiments do not require application developers to manually annotatethe source code of the user application or to issue special systemcommands to enable enforcement of the runtime policies. Theinstrumentation library also collects and transmits user interfacedisplay screens of the user application to an application managerserver, such as application manager server device 302 in FIG. 3.

In this example, user application instrumentation process 400 includestwo different types of user application instrumentation processes: 1)instrumentation using categories process 402; and 2) instrumentationusing class loading process 404. Of course it should be noted thatillustrative embodiments are not limited to using only the two userapplication instrumentation processes above, but also may utilize othertypes of instrumentation processes to instrument the user application aswell.

Instrumentation using categories process 402 injects the instrumentationlibrary into the user application via an X-code linker during the userapplication's compilation and linking stages. Instrumentation usingcategories process 402 replaces, for example, method 2 with method 3.Method 3 may, for example, invoke logging of user interface displayscreen activities, call original method 2, and optionally return loggingresults.

Instrumentation using class loading process 404 does not require anyaccess to the user application's source code. Instrumentation usingclass loading process 404 injects the instrumentation library into theuser application via JAVA® bytecode rewriting without any need forsource code access and without any need for relinking and recompiling ofthe user application. Instrumentation using class loading process 404overrides, for example, “Operation,” logs the “Operation” state anddata, and calls the “Operation” class. In other words, each selectedcomponent within a particular user application model actually becomes asub-classed instance of the component defined in the user application.This sub-classed instance of the component being a super set of theoriginal component can query all information and data from the originalcomponent, which includes structural, layout, user-defined, and eventinformation.

With reference now to FIG. 5, an example of a display screen datapackage is depicted in accordance with an illustrative embodiment.Display screen data package 500 may be, for example, one of displayscreen data packages 220 in FIG. 2. An instrumentation library, such asinstrumentation library 310 in FIG. 3, embedded within a userapplication, such as user application 308 in FIG. 3, generates displayscreen data package 500. The instrumentation library captures displayeduser interface display screens of a running user application andcalculates screen position coordinates of each visual component withinthe captured user interface display screens.

In this example, display screen data package 500 includes one captureduser interface display screen with three visual components, such as userinterface display screen containing three components 502. The threecomponents are 1) “TextView” 504 with calculated screen positioncoordinates of “0, 110, 480, 182”; 2) “TextView” 506 with calculatedscreen position coordinates of “73, 55, 258, 92”; and 3) “ImageView” 508with calculated screen position coordinates of “19, 50, 67, 98”. Also inthis example, display screen data package 500 includes component andevent data 510. Component and event data 510 includes a componentidentification number or label, a user interface display screenidentification name, events or activities of the identified componentthat are currently monitored and tracked, and a type of the identifiedcomponent.

However, it should be noted that display screen data package 500 is onlyintended as an example and not as a limitation on illustrativeembodiments. In other words, display screen data package 500 may includemore or less information. Further, display screen data package 500 mayinclude data for a plurality of user interface display screensassociated with a user application.

With reference now to FIG. 6, an example of a runtime tracking andenforcement policy is depicted in accordance with an illustrativeembodiment. Runtime tracking and enforcement policy 600 may be, forexample, one of runtime policies 224 in FIG. 2. An application managerserver, such as application manager server device 302 in FIG. 3,generates runtime tracking and enforcement policy 600 based on userinputs within a control panel, such as web browser control panel 316 inFIG. 3.

Runtime tracking and enforcement policy 600 tracks and logs activitiesof selected components within user interface display screens of a userapplication, such as user application 308 in FIG. 3, compiled programobjects corresponding to the selected components within user interfacedisplay screens during execution of the user application, and data flowin and out of the compiled program objects corresponding to the selectedcomponents during execution of the user application. In addition,runtime tracking and enforcement policy 600 controls functionality ofselected components within the user interface display screens of theuser application. In this example, runtime tracking and enforcementpolicy 600 includes identification of the user application associatedwith runtime tracking and enforcement policy 600; identification of theregistered client device, such as registered client device 304 in FIG.3, including the identified user application; identification of alocation of the registered client device and identification of anetwork, such as network 102 in FIG. 1, that the registered clientdevice is located within; identification of a selected user interfacedisplay screen of the identified user application; and identification ofselected components that are to be tracked and/or controlled within theidentified user interface display. Also in this example, runtimetracking and enforcement policy 600 enables tracking of a component withan identification label of “064300107” within user interface displayscreen “ImageView” and disables functionality of another component withan identification label of “194432254480” within the user interfacedisplay screen “ImageView”.

However, it should be noted that runtime tracking and enforcement policy600 is only intended as an example and not as a limitation onillustrative embodiments. In other words, runtime tracking andenforcement policy 600 may include data for any number of components,such as, for example, one to one thousand, within a user interfacedisplay screen.

With reference now to FIG. 7, a diagram illustrating an example ofvisual modeling of a user application is depicted in accordance with anillustrative embodiment. Visual modeling of user application process 700illustrates a method for modeling a user application, such as userapplication 308 in FIG. 3, by visual inspection by a user, such as asystem administrator, using a standard web browser control panel, suchas web browser control panel 316 in FIG. 3. A user of the web browsercontrol panel utilizes the visual model of the user application togenerate one or more runtime policies of control points, which can beenabled in an instrumentation library, such as instrumentation library310 in FIG. 3, for selected components within user interface displayscreens of the modeled user application.

The user interacts with the user interface display screens, which areuploaded from a registered client device, such as registered clientdevice 304 in FIG. 3, during a user interface display screen capturephase, by selecting and labeling components of the uploaded userinterface display screens using, for example, a set of mouse clicks overthe selected components. Selecting a component allows for trackingand/or control of the selected component. In addition, selectedcomponents within a user interface display screen are grouped into atree structure, similar to the structure of the visual model of the userapplication.

The user utilizes the web browser control panel to publish or deploy thegenerated runtime tracking and enforcement policies, such as runtimepolicies 224 in FIG. 2, to one or more registered client devices thatinclude the user application associated with the generated runtimetracking and enforcement policies. Generated or modified runtimetracking and enforcement policies may be deployed as often as needed.

With reference now to FIG. 8, a diagram illustrating an example of a webbrowser user application control display is depicted in accordance withan illustrative embodiment. Web browser user application control display800 may be one of a plurality of web browser control displays within aweb browser control panel, such as web browser control panel 316 in FIG.3. A user, such as a system administrator, may utilize web browser userapplication control display 800 to enforce control of a userapplication, such as user application 308 in FIG. 3, located on one ormore selected client devices, such as registered client devices 304 and306 in FIG. 3. A registered client device may, for example,automatically appear in web browser user application control display 800when a registered client device first runs the user application with aninstrumented library, such as instrumented library 310 in FIG. 3,containing the runtime tracking and enforcement policies correspondingto components within user interface display screens of the userapplication.

Web browser user application control display 800 controls the userapplication at the component level. For example, controlling the userapplication may include enabling and disabling components within userinterface display screens, removing component buttons or input areasfrom a running user application, changing colors and styles ofcomponents, and triggering events, such as clicking a button of acomponent. Controlling the user application may also include controllingglobal user application functionality, such as, for example, enablingand disabling network communication devices, cameras, or globalpositioning system devices located in the registered client devices.Further, controlling may include introducing a behavior that is based onconditionals, such as, for example, a current location of a registeredclient device based on global positioning system data.

With reference now to FIG. 9, a diagram illustrating an example of a webbrowser user application usage display is depicted in accordance with anillustrative embodiment. Web browser user application usage display 900may be one of a plurality of web browser control displays within a webbrowser control panel, such as web browser control panel 316 in FIG. 3.A user, such as a system administrator, may utilize web browser userapplication usage display 900 to track user application usage bycomponent. The graph illustrated in web browser user application usagedisplay 900 depicts event usage per component across all registeredclient devices, such as clients 110-116 in FIG. 1. In this example, “#of onClick events for component id 24309456381” is being tracked.However, it should be noted that web browser user application usagedisplay 900 may track more components by a user adding the components toa set of one or more runtime tracking and enforcement policies.

With reference now to FIG. 10A and FIG. 10B, a flowchart illustrating aprocess for managing applications is shown in accordance with anillustrative embodiment. The process shown in FIGS. 10A and 10B may beimplemented in a server device, such as, for example, server 104 in FIG.1 or application manager server 302 in FIG. 3. Also, the process shownin FIGS. 10A and 10B may be implemented in a data processing system,such as data processing system 200 in FIG. 2.

The process begins when the data processing system receives userinterface display screens of a user application from a client device viaa network (step 1002). Afterward, the data processing system generates avisual model of the user interface display screens of the userapplication by mapping components displayed within the user interfacedisplay screens to screen position coordinates and by mapping the screenposition coordinates corresponding to the components to original sourcecode of the user application without accessing the original source codeof the user application (step 1004). In addition, the data processingsystem associates labels with the components within the user interfacedisplay screens of the user application in the generated visual model(step 1006). The data processing system uses the labels to uniquelyidentify the different components within the user interface displayscreens.

Subsequently, the data processing system receives a selection of a setof components within the user interface display screens of the userapplication in the generated visual model (step 1008). Then, the dataprocessing system generates a runtime policy for each component in theselected set of components within the user interface display screens ofthe user application, compiled program objects corresponding to eachcomponent in the selected set of components within the user interfacedisplay screens during execution of the user application, and a dataflow in and out of the compiled program objects corresponding to eachcomponent in the selected set of components within the user interfacedisplay screens during the execution of the user application based onuser interaction with the generated visual model of the user interfacedisplay screens (step 1010). Further, the data processing system sendsthe runtime policy for each component in the selected set of componentswithin the user interface display screens of the user application, thecompiled program objects corresponding to each component in the selectedset of components within the user interface display screens during theexecution of the user application, and the data flow in and out of thecompiled program objects corresponding to each component in the selectedset of components within the user interface display screens during theexecution of the user application to the client device via the network(step 1012). Furthermore, the data processing system tracks activity ofeach component in the selected set of components within the userinterface display screens of the user application running on the clientdevice, the compiled program objects corresponding to each component inthe selected set of components within the user interface display screensduring the execution of the user application, and the data flow in andout of the compiled program objects corresponding to each component inthe selected set of components within the user interface display screensduring the execution of the user application using data that is trackedand logged on the client device based on the runtime policy for eachcomponent in the selected set of components (step 1014). The processterminates thereafter.

With reference now to FIG. 11, a flowchart illustrating a process forcapturing user interface display screens is shown in accordance with anillustrative embodiment. The process shown in FIG. 11 may be implementedin a client device, such as, for example, client 110 in FIG. 1 orregistered client device 304 in FIG. 3.

The process begins when the data processing system receives an input torun a user application on the data processing system (step 1102).Afterward, the data processing system captures images of displayed userinterface display screens of the running user application (step 1104).The data processing system may use, for example, an instrumentationlibrary, which was injected into the user application prior todeployment of the user application to the data processing system, tocapture the images of the displayed user interface display screens ofthe running user application. Alternatively, the instrumentation librarymay abstract the user interface display screens of the user application,while the user application is static or not running, by examining, forexample, either the source code of the user application or the byte codeof the user application.

In addition, the data processing system calculates screen positioncoordinates corresponding to components within the displayed userinterface display screens of the running user application (step 1106).Further, the data processing system generates a display screen datapackage, such as display screen data package 500 in FIG. 5, thatincludes the captured images of the displayed user interface displayscreens of the running user application and the calculated screenposition coordinates corresponding to the components within thedisplayed user interface display screens (step 1108). Subsequently, thedata processing system makes a determination as to whether anapplication manager server, such as application manager server device302 in FIG. 3, is available (step 1110).

If the data processing system determines that the application managerserver is available, yes output of step 1110, then the data processingsystem sends the display screen data package that includes the capturedimages of the displayed user interface display screens of the runninguser application and the calculated screen position coordinatescorresponding to the components within the displayed user interfacedisplay screens to the application manager server via a network, such asnetwork 102 in FIG. 1 (step 1112). The process terminates thereafter. Ifthe data processing system determines that the application managerserver is not available, no output of step 1110, then the dataprocessing system waits for the application manager server to becomeavailable (step 1114). Thereafter, the process returns to step 1112.

With reference now to FIG. 12, a flowchart illustrating a process forstoring a display screen data package is shown in accordance with anillustrative embodiment. The process shown in FIG. 12 may be implementedin a server device, such as, for example, server 104 in FIG. 1 orapplication manager server device 304 in FIG. 3.

The process begins when the data processing system receives a displayscreen data package, such as display screen data package 500 in FIG. 5,that includes images of user interface display screens of a userapplication located on a client device and screen position coordinatescorresponding to components within the user interface display screensfrom the client device via a network (step 1202). Afterward, the dataprocessing system parses the display screen data package that includesthe images of the user interface display screens of the user applicationon the client device and the screen position coordinates correspondingto the components within the user interface display screens (step 1204).The data processing system may parse the display screen data package toseparate and identify each component within each of the different userinterface display screens.

Then, the data processing system generates a database entry for the userapplication in a storage device, such as storage 108 in FIG. 1 (step1206) if a database entry for the user application does not alreadyexist. Furthermore, the data processing system stores the parsed displayscreen data package that includes the images of user interface displayscreens of the user application and the screen position coordinatescorresponding to the components within the user interface displayscreens in the database entry for the user application (step 1208). Theprocess terminates thereafter.

With reference now to FIG. 13, a flowchart illustrating a process forconcurrently displaying a user interface display screen rendering isshown in accordance with an illustrative embodiment. The process shownin FIG. 13 may be implemented in a server device, such as, for example,server 104 in FIG. 1 or application manager server device 304 in FIG. 3.

The process begins when the data processing system waits to receive arendering of a user interface display screen that is currently beingdisplayed on a client device, such as registered client device 304 inFIG. 3 (step 1302). The data processing system makes a determination asto whether a rendering of a user interface display screen has beenreceived (step 1304). If the data processing system determines that arendering of a user interface display screen has not been received, nooutput of step 1304, then the process returns to step 1302. If the dataprocessing system determines that a rendering of a user interfacedisplay screen has been received, yes output of step 1304, then the dataprocessing system displays the rendering of the user interface displayscreen that is currently being displayed on the client device on adisplay device, such as display 318 in FIG. 3, coupled to the dataprocessing system (step 1306). The process terminates thereafter.

With reference now to FIG. 14, a flowchart illustrating a process forgenerating a visual model of a user interface display screen is shown inaccordance with an illustrative embodiment. The process shown in FIG. 14may be implemented in a server device, such as, for example, server 104in FIG. 1 or application manager server device 304 in FIG. 3.

The process begins when the data processing system waits a storeddisplay screen data package that includes images of user interfacedisplay screens of a user application located on a client device andscreen position coordinates corresponding to components within the userinterface display screens to become available for processing (step1402). The data processing system makes a determination as to whether astored display screen data package is available for processing (step1404). If the data processing system determines that a stored displayscreen data package is not available for processing, no output of step1404, then the process returns to step 1402. If the data processingsystem determines that a stored display screen data package is availablefor processing, yes output of step 1404, then the data processing systemmaps the screen position coordinates corresponding to the componentswithin the user interface display screens to defined areas within theuser interface display screens (step 1406).

Then, the data processing system generates a visual model of the userinterface display screens of the user application located on the clientdevice based on the mapping of the screen position coordinatescorresponding to the components to the defined areas within the userinterface display screens (step 1408). Afterward, the data processingsystem displays the visual model of the user interface display screensof the user application located on the client device based on themapping of the screen position coordinates corresponding to thecomponents to the defined areas within the user interface displayscreens (step 1410). The process terminates thereafter.

With reference now to FIG. 15, a flowchart illustrating a process forgenerating a runtime policy is shown in accordance with an illustrativeembodiment. The process shown in FIG. 15 may be implemented in a serverdevice, such as, for example, server 104 in FIG. 1 or applicationmanager server device 304 in FIG. 3.

The process begins when the data processing system receives a selectionof a defined area within a displayed visual model that is associatedwith user interface display screens of a user application located on aclient device (step 1502). In addition, the data processing systemreceives a selection of a component located in the defined area (step1504). Further, the data processing system labels the selected componentlocated in the defined area of the displayed visual model to identifythe selected component (step 1506).

Furthermore, the data processing system receives an input that defines aruntime policy corresponding to the selected component in the definedarea of the displayed visual model (step 1508). Then, the dataprocessing system generates the runtime policy corresponding to theselected component based on the received input (step 1510). Moreover,the data processing system associates the generated runtime policy withthe selected component (step 1512).

Afterward, the data processing system makes a determination as towhether the data processing system received a selection of anothercomponent in the defined area (step 1514). If the data processing systemdetermines that the data processing system did receive a selection ofanother component in the defined area, yes output of step 1514, then theprocess returns to step 1506 where the data processing system labels theselected component. If the data processing system determines that thedata processing system did not receive a selection of another componentin the defined area, no output of step 1514, then the data processingsystem makes a determination as to whether the data processing systemreceived a selection of another defined area within the displayed visualmodel (step 1516). If the data processing system determines that thedata processing system did receive a selection of another defined areawithin the displayed visual model, yes output of step 1516, then theprocess returns to step 1504 where the data processing system waits toreceive a selection of a component within the selected area. If the dataprocessing system determines that the data processing system did notreceive a selection of another defined area within the displayed visualmodel, no output of step 1516, then the process terminates thereafter.

With reference now to FIG. 16, a flowchart illustrating a process forsending a runtime policy to registered client devices is shown inaccordance with an illustrative embodiment. The process shown in FIG. 16may be implemented in a server device, such as, for example, server 104in FIG. 1 or application manager server device 304 in FIG. 3.

The process begins when the data processing system makes a determinationas to whether a runtime policy corresponding to a component within auser interface display screen of a user application located on a clientdevice has been generated or modified (step 1602). If the dataprocessing system determines that a runtime policy corresponding to acomponent within a user interface display screen of a user applicationlocated on a client device has not been generated or modified, no outputof step 1602, then the process returns to step 1602 where the dataprocessing system waits for a runtime policy to be generated ormodified. If the data processing system determines that a runtime policycorresponding to a component within a user interface display screen of auser application located on a client device has been generated ormodified, yes output of step 1602, then the data processing system sendsthe runtime policy corresponding to the component within the userinterface display screen of the user application to registered clientdevices that include the user application, such as registered clientdevices 304 and 306 that include user application 308 in FIG. 3, via anetwork, such as network 102 in FIG. 1 (step 1604).

With reference now to FIG. 17, a flowchart illustrating a process forenforcing runtime policies is shown in accordance with an illustrativeembodiment. The process shown in FIG. 17 may be implemented in a clientdevice, such as, for example, client 110 in FIG. 1 or registered clientdevice 304 in FIG. 3.

The process begins when the data processing system receives a set ofruntime policies corresponding to a set of components within userinterface display screens of a user application located on the dataprocessing system from an application manager server, such asapplication manager server 302 in FIG. 3, via a network, such as network102 in FIG. 1 (step 1702). Afterward, the data processing system updatesan embedded instrumentation library of the user application, such asinstrumentation library 310 of user application 308 in FIG. 3, with theset of runtime policies corresponding to the set of components withinthe user interface display screens of the user application (step 1704).Subsequently, the data processing system receives an input to run theuser application on the data processing system (step 1706).

Then, the data processing system retrieves a runtime policy for eachcomponent within the user interface display screens that has acorresponding runtime policy from the embedded instrumentation libraryusing labels associated with the components (step 1708). Further, thedata processing system enforces the runtime policy for each component,compiled program objects corresponding to each component, and data flowin and out of the compiled program objects corresponding to eachcomponent within the user interface display screens that has acorresponding runtime policy to track activity of correspondingcomponents and/or control functionality of the corresponding components(step 1710). The process terminates thereafter.

Thus, illustrative embodiments provide a computer system and a computerprogram product for managing user applications. The descriptions of thevarious illustrative embodiments have been presented for purposes ofillustration, but are not intended to be exhaustive or limited to theembodiments disclosed. Many modifications and variations will beapparent to those of ordinary skill in the art without departing fromthe scope and spirit of the described embodiment. The terminology usedherein was chosen to best explain the principles of the embodiment, thepractical application or technical improvement over technologies foundin the marketplace, or to enable others of ordinary skill in the art tounderstand the embodiments disclosed here.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousillustrative embodiments. In this regard, each block in the flowchart orblock diagrams may represent a module, segment, or portion of code,which comprises one or more executable instructions for implementing thespecified logical function(s). It should also be noted that, in somealternative implementations, the functions noted in the block may occurout of the order noted in the figures. For example, two blocks shown insuccession may, in fact, be executed substantially concurrently, or theblocks may sometimes be executed in the reverse order, depending uponthe functionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts, or combinations of special purpose hardware andcomputer instructions.

What is claimed is:
 1. A computer system for managing user applications,the computer system comprising: a bus system; a storage device connectedto the bus system, wherein the storage device stores computer readableprogram code; and a processor unit connected to the bus system, whereinthe processor unit executes the computer readable program code togenerate a visual model of user interface display screens of a userapplication by mapping components displayed within the user interfacedisplay screens to screen position coordinates and by mapping the screenposition coordinates corresponding to the components to original sourcecode of the user application without accessing the original source codeof the user application; generate a runtime policy for each component ina selected set of components within the user interface display screensof the user application based on user interaction with the generatedvisual model of the user interface display screens; send the generatedruntime policy for each component in the selected set of componentswithin the user interface display screens of the user application to aclient device via a network; and track activity of each component in theselected set of components within the user interface display screens ofthe user application running on the client device using data that istracked and logged on the client device based on the generated runtimepolicy for each component in the selected set of components.
 2. Thecomputer system of claim 1, wherein the processor unit further executesthe computer readable program code to associate labels with thecomponents displayed within the user interface display screens of theuser application in the generated visual model.
 3. The computer systemof claim 1, wherein the processor unit further executes the computerreadable program code to receive a display screen data package thatincludes images of the user interface display screens of the userapplication located on the client device and screen position coordinatescorresponding to the components displayed within the user interfacedisplay screens from the client device via the network; and parse thedisplay screen data package that includes the images of the userinterface display screens of the user application on the client deviceand the screen position coordinates corresponding to the componentswithin the user interface display screens, wherein the computer parsesthe display screen data package to identify each component within eachof the user interface display screens.
 4. The computer system of claim1, wherein the processor unit further executes the computer readableprogram code to display a rendering of a user interface display screenthat is currently being displayed on the client device on a displaydevice coupled to the computer system.
 5. The computer system of claim1, wherein the processor unit further executes the computer readableprogram code to map the screen position coordinates corresponding to thecomponents displayed within the user interface display screens todefined areas within the user interface display screens.
 6. The computersystem of claim 1, wherein the processor unit further executes thecomputer readable program code to determine whether a runtime policycorresponding to a particular component within a user interface displayscreen of the user application located on the client device has beenmodified; and send the modified runtime policy corresponding to theparticular component within the user interface display screen of theuser application to registered client devices that include the userapplication via the network in response to determining that the runtimepolicy corresponding to the particular component within the userinterface display screen of the user application located on the clientdevice has been modified.
 7. A computer program product stored on acomputer readable storage device having computer readable program codeencoded thereon that is executable by a computer for managing userapplications, the computer program product comprising: computer readableprogram code for generating a visual model of user interface displayscreens of a user application by mapping components displayed within theuser interface display screens to screen position coordinates and bymapping the screen position coordinates corresponding to the componentsto original source code of the user application without accessing theoriginal source code of the user application; computer readable programcode for generating a runtime policy for each component in a selectedset of components within the user interface display screens of the userapplication based on user interaction with the generated visual model ofthe user interface display screens; computer readable program code forsending the generated runtime policy for each component in the selectedset of components within the user interface display screens of the userapplication to a client device via a network; and computer readableprogram code for tracking activity of each component in the selected setof components within the user interface display screens of the userapplication running on the client device using data that is tracked andlogged on the client device based on the generated runtime policy foreach component in the selected set of components.
 8. The computerprogram product of claim 7 further comprising: computer readable programcode for associating labels with the components displayed within theuser interface display screens of the user application in the generatedvisual model.
 9. The computer program product of claim 7 furthercomprising: computer readable program code for receiving a displayscreen data package that includes images of the user interface displayscreens of the user application located on the client device and screenposition coordinates corresponding to the components displayed withinthe user interface display screens from the client device via thenetwork; and computer readable program code for parsing the displayscreen data package that includes the images of the user interfacedisplay screens of the user application on the client device and thescreen position coordinates corresponding to the components within theuser interface display screens, wherein the computer parses the displayscreen data package to identify each component within each of the userinterface display screens.
 10. The computer program product of claim 7further comprising: computer readable program code for displaying arendering of a user interface display screen that is currently beingdisplayed on the client device on a display device coupled to thecomputer.
 11. The computer program product of claim 7 furthercomprising: computer readable program code for mapping the screenposition coordinates corresponding to the components displayed withinthe user interface display screens to defined areas within the userinterface display screens.
 12. The computer program product of claim 7further comprising: computer readable program code for determiningwhether a runtime policy corresponding to a particular component withina user interface display screen of the user application located on theclient device has been modified; and computer readable program code forsending the modified runtime policy corresponding to the particularcomponent within the user interface display screen of the userapplication to registered client devices that include the userapplication via the network in response to determining that the runtimepolicy corresponding to the particular component within the userinterface display screen of the user application located on the clientdevice has been modified.
 13. A data processing system for managing userapplications, the data processing system comprising: a bus system; astorage device connected to the bus system, wherein the storage devicestores computer readable program code; and a processor unit connected tothe bus system, wherein the processor unit executes the computerreadable program code to capture images of displayed user interfacedisplay screens of a running user application on the data processingsystem, wherein the data processing system uses an embeddedinstrumentation library in the running user application to capture theimages of the displayed user interface display screens; calculate screenposition coordinates corresponding to components within the displayeduser interface display screens of the running user application; andgenerate a display screen data package that includes the captured imagesof the displayed user interface display screens of the running userapplication and the calculated screen position coordinates correspondingto the components within the displayed user interface display screens.14. The data processing system of claim 13, wherein the processor unitfurther executes the computer readable program code to send the displayscreen data package that includes the captured images of the displayeduser interface display screens of the running user application and thecalculated screen position coordinates corresponding to the componentswithin the displayed user interface display screens to an applicationmanager server via a network.
 15. The data processing system of claim13, wherein the processor unit further executes the computer readableprogram code to receive a set of runtime policies corresponding to a setof components within the displayed user interface display screens of therunning user application from an application manager server via anetwork; and update the embedded instrumentation library in the runninguser application with the set of runtime policies corresponding to theset of components within the displayed user interface display screens ofthe running user application.
 16. The data processing system of claim13, wherein the processor unit further executes the computer readableprogram code to retrieve a runtime policy for each component within thedisplayed user interface display screens that has a correspondingruntime policy from the embedded instrumentation library using labelsassociated with the components; and enforce the runtime policy for eachcomponent within the displayed user interface display screens that hasthe corresponding runtime policy to at least one of track activity ofcorresponding components and control functionality of the correspondingcomponents.
 17. A computer program product stored on a computer readablestorage device having computer readable program code encoded thereonthat is executable by a data processing system for managing userapplications, the computer program product comprising: computer readableprogram code for capturing images of displayed user interface displayscreens of a running user application on the data processing system,wherein the data processing system uses an embedded instrumentationlibrary in the running user application to capture the images of thedisplayed user interface display screens; computer readable program codefor calculating screen position coordinates corresponding to componentswithin the displayed user interface display screens of the running userapplication; and computer readable program code for generating a displayscreen data package that includes the captured images of the displayeduser interface display screens of the running user application and thecalculated screen position coordinates corresponding to the componentswithin the displayed user interface display screens.
 18. The computerprogram product of claim 17 further comprising: computer readableprogram code for sending the display screen data package that includesthe captured images of the displayed user interface display screens ofthe running user application and the calculated screen positioncoordinates corresponding to the components within the displayed userinterface display screens to an application manager server via anetwork.
 19. The computer program product of claim 17 furthercomprising: computer readable program code for receiving a set ofruntime policies corresponding to a set of components within thedisplayed user interface display screens of the running user applicationfrom an application manager server via a network; and computer readableprogram code for updating the embedded instrumentation library in therunning user application with the set of runtime policies correspondingto the set of components within the displayed user interface displayscreens of the running user application.
 20. The computer programproduct of claim 17 further comprising: computer readable program codefor retrieving, by the data processing system, a runtime policy for eachcomponent within the displayed user interface display screens that has acorresponding runtime policy from the embedded instrumentation libraryusing labels associated with the components; and computer readableprogram code for enforcing, by the data processing system, the runtimepolicy for each component within the displayed user interface displayscreens that has the corresponding runtime policy to at least one oftrack activity of corresponding components and control functionality ofthe corresponding components.